package com.wm.common.core.filter.base;


import com.fasterxml.jackson.annotation.JsonIgnore;

import lombok.Data;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;

@Data
public class SearchContextBase {

    /**
     * 当前页数
     */
    public int pageNum = 1;
    /**
     * 每页显示条数
     */
    public int pageSize = 20;
    /**
     * 排序
     */
    public String sort;

    /**
     * 排序对象
     */
    @JsonIgnore
    public Sort pageSort;

    /**
     * 获取分页参数
     * @return
     */
    public Pageable getPageable() {
        setSort();
        if(ObjectUtils.isEmpty(pageSort))
            return PageRequest.of(pageNum - 1,pageSize);
        else
            return PageRequest.of(pageNum - 1,pageSize,pageSort);
    }

    /**
     * 设置排序值
     */
    public void setSort() {
        if(!StringUtils.isEmpty(this.sort)){
            String sortArr[]=this.sort.split(",");
            String sortField=sortArr[0];
            String sortDirection=sortArr[1];
            if(sortDirection.equalsIgnoreCase("asc")){
                this.pageSort=Sort.by(Sort.Direction.ASC,sortField);
            }
            else if(sortDirection.equalsIgnoreCase("desc")){
                this.pageSort=Sort.by(Sort.Direction.DESC,sortField);
            }
        }
    }

}
